

using System;
using System.IO;
using System.Security;

namespace CUtil
{
	/// <summary>
	/// Summary description for DirectoryDetails.
	/// </summary>
	[Serializable]
	public class DirectoryDetails
	{
		private string strError;
		private bool bError;
		private DirectoryInfo dirInfo;

		/// <summary>
		/// get the current error message
		/// </summary>
		public string ErrorMessage
		{
			get
			{
				return strError;
			}
		}

		public bool Error
		{
			get
			{
				return bError;
			}
		}

		/// <summary>
		/// get the directoryinfo for the current directory
		/// </summary>
		public DirectoryInfo GetDirectoryInfo
		{
			get
			{
				return dirInfo;
			}
		}

		/// <summary>
		/// empty constructor for compatibility with file details
		/// </summary>
		public DirectoryDetails()
		{
		}

		/// <summary>
		/// constructor
		/// </summary>
		/// <param name="strLocation">full path of the directory to get information on</param>
		public DirectoryDetails( string strLocation )
		{
			Open( strLocation );
		}

		/// <summary>
		/// open function for compatability fiel file details
		/// </summary>
		/// <param name="strLocation">direcotry to access</param>
		/// <returns>true on success</returns>
		public bool Open( string strLocation )
		{
			bError = false;
			try
			{
				dirInfo = new DirectoryInfo( strLocation );
			}
			catch( ArgumentNullException argNullExp )
			{
				strError = "Error getting directory information reason " + argNullExp.Message;
				bError = true;
			}
			catch( DirectoryNotFoundException dNFExp )
			{
				strError = "Error getting directory information reason " + dNFExp.Message;
				bError = true;
			}
			catch( SecurityException secExp )
			{
				strError = "Error getting the directory information reason " + secExp.Message;
				bError = true;
			}
			catch( ArgumentException argExp )
			{
				strError = "Error getting the directory information reason " + argExp.Message;
				bError = true;
			}
			catch( PathTooLongException ptlExp )
			{
				strError = "Error getting the directory information reason " + ptlExp.Message;
				bError = true;
			}

			return bError == true?false:true;
		}
	}
}
